package com.hsj.config;

import com.hsj.task.QuartzTask;
import org.quartz.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

//@Configuration   开发别的时候这里要注释掉，
public class QuartzConfig {
    /**
     *    JobDetail  是 工作明细，可理解成一个 工作列表， 他需要绑定 多个工作
     * @return
     */
    @Bean
    public JobDetail printJobDetail(){
        // 使用 builder的 newJob来创建对象，可以在后面直接用 .方法()来赋值， storeDurably是用来持久化的， build()就是开始造对象
        return JobBuilder.newJob(QuartzTask.class).storeDurably().build();
    }

    /**
     *    触发器， 用来绑定  工作明细
     * @return
     */
    @Bean
    public Trigger printJobTrigger(){
        /**
         * cronSchedule  cron表达式 定义 的  任务执行的时间表   ，用来规定执行任务的时间
         *     秒   分   秒  日  月  星期几          ？代表根据前面的日期 匹配 , * 代表 任意值
         *     0/5  *   *   *   *   ?        => 每5秒执行一次
         *
         */
        CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule("0/5 * * * * ? ");

       // Trigger  触发器  绑定 任务详情列表 ， 在绑定  执行任务的时间表，
        return TriggerBuilder.newTrigger().forJob(printJobDetail()).withSchedule(cronScheduleBuilder).build();
    }
}
